#include "plog.h"
#include <stdarg.h>
#include <string.h>

static LogLevel current_level = LOG_LEVEL_INFO; // 默认日志级别

// 设置当前日志级别
void log_set_level(LogLevel level)
{
    current_level = level;
}

// 核心日志输出函数
void plog_printf(LogLevel level, const char *func, const char *file, int line, const char *fmt, ...)
{
    if (level < current_level)
        return;
    const char *level_str[] = {"D", "I", "W", "E"};
    // 裁剪文件名（去掉路径）
    const char *file_short = strrchr(file, '/');
    if (!file_short)
        file_short = strrchr(file, '\\');
    file_short = file_short ? file_short + 1 : file;
    // 打印增强版日志头
    printf("[%-1s][%s:%d][%s] ",
           level_str[level],
           file_short,
           line,
           func);
    // 打印用户内容
    va_list args;
    va_start(args, fmt);
    vprintf(fmt, args);
    va_end(args);

    printf("\r\n"); // 换行
}
